import axios from 'axios';
import useToken from '../stores/token';
import config from '../config';
import router from '../router';
import { showLoadingToast, showToast, closeToast } from 'vant';

const baseURL = config.baseURL;
const service = axios.create({ baseURL });

// 请求拦截器
service.interceptors.request.use((config) => {
    const { token } = useToken();
    showLoadingToast({
        message: '加载中...',
        forbidClick: true,
        loadingType: 'spinner'
    });
    if (token) {
        config.headers.jwt = token;
    }
    return config;
});

// 响应拦截器
service.interceptors.response.use(
    (response) => {
        closeToast();
        const { errno, data, errmsg } = response.data;
        if (errno === 0) {
            if (errmsg!== '') {
                showToast({
                    message: errmsg,
                    type: 'success'
                });
            }
            return data || true;
        }
        showToast({
            message: errmsg,
            type: 'error'
        });
        if (errno === 2) {
            router.push({ name: 'login' });
        }
        return false;
    },
    error => {
        closeToast();
        showToast({
            message: '请求失败',
            type: 'fail'
        });
        console.log(error);
    }
);

export default service;